layui.use(['layer', 'form', 'table', 'util', 'admin'], function () {
    var $ = layui.jquery;
    var layer = layui.layer;
    var form = layui.form;
    var table = layui.table;
    var util = layui.util;
    var admin = layui.admin;

    //渲染表格
    var configInsTb = table.render({
        elem: '#configTable',
        url: prefix + '/list',
        page: true,
        toolbar: ['<p>',
            '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn ' + addFlag + '"><i class="layui-icon layui-icon-addition"></i>添加</button>&nbsp;',
            '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn ' + removeFlag + '"><i class="layui-icon layui-icon-delete"></i>删除</button>&nbsp;',
            '<button lay-event="refreshCache" class="layui-btn layui-btn-sm layui-btn-danger icon-btn ' + removeFlag + '"><i class="layui-icon layui-icon-refresh-3"></i>刷新缓存</button>',
            '</p>'].join(''),
        initSort: {
            field: 'gmtCreate'
            , type: 'desc'
        },
        where: {
            fieldName: 'gmtCreate'
            , sortType: 'desc'
        },
        cols: [
            [
                {type: 'checkbox'},
                {type: 'numbers'},
                {field: 'configId', title: '参数主键', sort: true, hide: true},
                {field: 'configName', title: '参数名称', sort: true},
                {field: 'configKey', title: '参数键名', sort: true},
                {field: 'configValue', title: '参数键值', sort: true},
                {
                    field: 'configType', title: '系统内置', templet: function (d) {
                        return showDictLabel(dictSysYesNo, d.configType);
                    }, sort: true
                },
                {field: 'remark', title: '备注'},
                {
                    field: 'gmtCreate', title: '创建时间', templet: function (d) {
                        return util.toDateString(d.gmtCreate, 'yyyy-MM-dd HH:mm:ss');
                    }, sort: true
                },
                {title: '操作', toolbar: '#configTbBar', align: 'center', minWidth: 200}
            ]
        ]
    });

    /* 表格搜索 */
    form.on('submit(configTbSearch)', function (data) {
        configInsTb.reload({where: data.field, page: {curr: 1}});
        return false;
    });

    /* 表格工具条点击事件 */
    table.on('tool(configTable)', function (obj) {
        if (obj.event === 'edit') { // 修改
            showEditModel(obj.data);
        } else if (obj.event === 'del') { // 删除
            doDel([obj.data.configId]);
        }
    });

    /* 触发排序事件 */
    table.on('sort(configTable)', function (obj) {
        configInsTb.reload({
            initSort: obj
            , where: {
                fieldName: obj.field
                , sortType: obj.type
            }
        });
    });

    /* 表格头工具栏点击事件 */
    table.on('toolbar(configTable)', function (obj) {
        if (obj.event === 'add') { // 添加
            showEditModel();
        } else if (obj.event === 'del') { // 删除
            var checkRows = table.checkStatus('userTable');
            if (checkRows.data.length === 0) {
                himio.notice.error('请选择要删除的数据');
                return;
            }
            var ids = checkRows.data.map(function (d) {
                return d.userId;
            });
            doDel(ids);
        } else if (obj.event === 'refreshCache') { // 清理缓存
            refreshCache(obj);
        }
    });

    /* 显示表单弹窗 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '640px',
            title: (mData ? '修改' : '添加') + '配置',
            content: $('#configEditDialog').html(),
            success: function (layero, dIndex) {
                form.render();
                // 回显表单数据
                form.val('configEditForm', mData);
                // 表单提交事件
                form.on('submit(configEditSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    admin.req(mData ? prefix + '/edit' : prefix + '/add', data.field, function (resp) {
                        layer.close(loadIndex);
                        if (resp.code === 0) {
                            layer.close(dIndex);
                            himio.notice.success(resp.msg);
                            configInsTb.reload({page: {curr: 1}});
                        } else {
                            himio.notice.error(resp.msg);
                        }
                    }, 'post');
                    return false;
                });
                // 禁止弹窗出现滚动条
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
            }
        });
    }

    /* 删除 */
    function doDel(data) {
        if (data.length === 0) {
            himio.notice.warn('请选择要删除的数据');
            return;
        }
        admin.confirm("确认要删除选中的" + data.length + "条数据吗?", function (index) {
            layer.close(index);
            var loadIndex = layer.load(2);
            admin.req(prefix + '/remove', {
                ids: data.join(",")
            }, function (resp) {
                layer.close(loadIndex);
                himio.notice.resp(resp, function () {
                    configInsTb.reload({page: {curr: 1}});
                });
            }, 'post');
        });
    }

    /* 清除缓存 */
    function refreshCache() {
        admin.req(prefix + "/refreshCache", function (resp) {
            himio.notice.resp(resp);
        });
    }
});
